﻿<!DOCTYPE HTML>
<html lang="zh">
<head>
<title>查找 - 语法 &amp; 使用 | AutoHotkey v2</title>
<meta name="description" content="The 查找 function searches 遍历 a given occurrence of a 字符串, from the left or the right." />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<link href="../static/theme.css" rel="stylesheet" type="text/css" />
<script src="../static/content.js" type="text/javascript"></script>
<script type="text/javascript">$(function(){0<=window.navigator.userAgent.toLowerCase().indexOf("ucbrowser")&&CaoNiMaDeUc()})</script>
</head>
<body>

<h1>查找</h1>

<p>在一个字符串中向右或向左搜索指定内容.</p>

<pre class="Syntax">FoundPos := <span class="func">查找</span>(Haystack, Needle <span class="optional">, CaseSense := false, StartingPos := 1, Occurrence := 1</span>)</pre>
<h2 id="Parameters">参数</h2>
<dl>

  <dt>Haystack</dt>
  <dd>
    <p>类型: <a href="../Concepts.htm#strings">字符串</a></p>
    <p>搜索其内容的字符串.</p>
  </dd>
  
  <dt>Needle</dt>
  <dd>
    <p>类型: <a href="../Concepts.htm#strings">字符串</a></p>
    <p>要搜索的字符串.</p>
  </dd>
  
  <dt>CaseSense</dt>
  <dd>
    <p>类型:  <a href="../Concepts.htm#numbers">整数</a>或<a href="../Concepts.htm#strings">字符串</a></p>
    <p>下列值之一(如果省略, 默认为 0):</p>
    <p><code>"On"</code> 或 <code>1</code>(<code>True</code>): 搜索区分大小写.</p>
    <p><code>"Off"</code> 或 <code>0</code>(<code>False</code>): 字母 A-Z 被视为与其小写字母相同.</p>
    <p><code>"Locale"</code>: 根据当前用户的区域设置规则, 搜索是不区分大小写的. 例如, 在大多数英语及西欧地区, 不仅将 A-Z 视为等同于它们的小写形式, 同时也将非-ASCII 字母(如 &Auml; 和 &Uuml;) 视为等同的. 根据被比较字符串的性质, <em>Locale</em> 比 <em>Off</em> 慢 1 到 8 倍.</p>
  </dd>

  <dt>StartingPos</dt>
  <dd>
    <p>类型: <a href="../Concepts.htm#numbers">整数</a></p>
    <p>如果省略 <em>StartingPos</em> 将默认从 1(<em>Haystack</em> 字符串中的位置 1) 开始搜索. 否则, 指定 2 从第二个字符开始, 指定 3 从第三个字符开始, 依此类推.</p>
    <p>如果 <em>StartingPos</em> 是负数, 则执行相反的搜索(从右到左), 从右边的那个位置开始. 例如, -1 从最后一个字符开始. 如果 <em>StartingPos</em> 为 0 或超过 <em>Haystack</em> 的长度, 则返回 0.</p>
    <p>不管 <em>StartingPos</em> 的值是多少, 返回值总是相对于 <em>Haystack</em> 中的第一个字符. 例如, "abc" 在 "123abc789" 中的位置始终是 4.</p>
  </dd>

  <dt>Occurrence</dt>
  <dd>
    <p>类型: <a href="../Concepts.htm#numbers">整数</a></p>
    <p>如果省略了 <em>Occurrence</em>, 它默认为 1, 函数返回 <em>Needle</em> 在 <em>Haystack</em> 中的首次匹配位置. 指定 <em>Occurrence</em> 为 2, 返回第二次匹配的位置, 3 返回第三次匹配位置, 依此类推.</p>
  </dd>

  </dl>
  
<h2 id="Return_Value">返回值</h2>
<p>类型: <a href="../Concepts.htm#numbers">整数</a></p>
<p>该函数返回字符串 <em>Needle</em> 在字符串 <em>Haystack</em> 中的出现位置. 位置 1 表示第一个字符; 因为 0 等同于 "false", 使它能提供直觉上 "没找到" 的意义.</p>
<p>传统上, 空字符串(<code>""</code>) 的出现可以在任何位置找到. 然而, 由于空白的 <em>Needle</em> 通常只会被误传, 因此会被视为一个错误(抛出异常).</p>

<h2 id="Remarks">备注</h2>
<p><a href="RegExMatch.htm">正则匹配</a> 可用于搜索字符串中的模式(正则表达式), 这使得它比 查找 更为灵活. 但是, 在搜索简单的子字符串时, 查找 通常比 正则匹配 更快.</p>
<p>查找 只搜索到第一个二进制零(空终止符), 而 正则匹配 搜索整个字符串的<a href="StrLen.htm">长度</a>, 即使它包含二进制零.</p>

<h2 id="Related">相关</h2>
<p><a href="RegExMatch.htm">正则匹配</a>, <a href="Is.htm">Is 函数</a></p>

<h2 id="Examples">示例</h2>
<div class="ex" id="ExRetValue">
<p><a href="#ExRetValue">#1</a></p>
<pre>信息框 查找("123abc789", "abc") <em>; 返回 4</em></pre>
</div>

<div class="ex" id="ExBasic">
<p><a href="#ExBasic">#2</a></p>
<pre>Haystack := "The Quick Brown Fox Jumps Over the Lazy Dog"
Needle := "Fox"
如果 查找(Haystack, Needle)
    信息框 "The 字符串 was found."
否则
    信息框 "The 字符串 was not found."</pre>
</div>

<div class="ex" id="ExCaseSens">
<p><a href="#ExBasic">#3</a></p>
<pre>Haystack := "The Quick Brown Fox Jumps Over the Lazy Dog"
Needle := "the"
信息框 查找(Haystack, Needle, false, 1, 2) <em>; 不区分大小写的搜索, 返回第二次匹配的位置</em>
信息框 查找(Haystack, Needle, true) <em>; 区分大小写的搜索, 返回首次匹配的位置, 结果同上</em>
</pre>
</div>

</body>
</html>